/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.br.cp.teste;

import com.br.cp.modelo.departamento.Departamento;
import com.br.cp.modelo.empregado.Empregado;
import com.br.cp.service.ManterProfissionalService;
import java.util.List;
import java.util.Properties;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

/**
 *
 * @author thiago.rodrigues
 */
public class ControleProfissionalClient {
   

    public static void main(String[] args) throws NamingException, ClassNotFoundException {
        
        Properties env = new Properties();
        env.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
        env.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
        env.put(Context.PROVIDER_URL, "localhost:1099");
            
        ManterProfissionalService manterProfService = (ManterProfissionalService) 
                new InitialContext(env).lookup("ControleProfissionalMake/manterProfissionalService/remote");
        
        imprimirDepartamentos(manterProfService.obterListaDepartamentos());
        
        //criarEmpregado(manterProfService);
        
        //imprimirDepartamentos(manterProfService.obterListaDepartamentos());
    }
    
    
    public static void criarEmpregado(ManterProfissionalService manterProfService) {
        
        System.out.println("Inserindo empregado ...");
        
        Departamento dep = new Departamento();
        dep.setId(2);
        
        Empregado emp = new Empregado();
        emp.setMatricula(111);
        emp.setNome("Pato Donald");
        emp.setDepartamento(dep);

        manterProfService.cadastrarEmpregado(emp);
        
        System.out.println("Empregado inserido com sucesso.");
    }
    
    
    
    public static void criarDepartamento(ManterProfissionalService manterProfService) {
        
        System.out.println("Inserindo departamento ...");
        
        Departamento dep = new Departamento();
        dep.setCodigo(30);
        dep.setNome("Servicos Gerais");
        
        manterProfService.criarDepartamento(dep);
        
        System.out.println("Departamento inserido com sucesso.");
    }
    
    
    public static void imprimirDepartamentos(List<Departamento> listaDepartamentos) {
        
        if (listaDepartamentos == null || listaDepartamentos.isEmpty())
            System.out.println("Lista de departamentos vazia.");
        
           for (Departamento dep : listaDepartamentos) {
            System.out.println(String.format("Código: %d , Nome: %s", dep.getCodigo(), dep.getNome()));
            
            if (dep.getListaEmpregados() == null || dep.getListaEmpregados().isEmpty()) {
                System.out.println("Departamento não contém empregados.");      
            }
            else {
                for (Empregado emp : dep.getListaEmpregados()) {
                    System.out.println(String.format("Nome: %s, Matrícula: %d", emp.getNome(), emp.getMatricula()));
                }
            }
                
        }
    }
    
}
